package edu.mercer.sse554.bkp;

import com.google.common.collect.ImmutableCollection;

/**
 * Task run in thread, returned results.<p>
 *
 * Used by file compression class SnappyCompression.<p>
 *
 * @param <K> - generic for the object returned from thread; i.e., Future or
 * 	Callable
 */

public interface TaskResults<K> 
{	
	/**
	 * Info[rmation] about task execution.<p>
	 * 
	 * Suggested usage: ImmutableMap: results of task execution; i.e., 
	 * 	success: true, runtime: 342 milliseconds....<p>
	 * 
	 * @return  Generic unbounded, return of info
	 */
	
	K info();
	
	
	/**
	 * Output from task.<p>
	 * 
	 * Suggested usage: collection contains formatted report.<p>
	 * 
	 * @return  ImmutableCollection&#60;String&#62; of task output
	 */
	
	ImmutableCollection<String> output();
	
	
	/**
	 * Print task output to std out/console.<p>
	 * 
	 * Print formatted report of task output.<p>
	 * 
	 * Returns self reference to TaskResults&#60;Generic unbounded&#62;.<p>
	 * 
	 * @return  this
	 */
	
	TaskResults<K> print();

	
}//interface
